package com.freight.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.freight.user.dto.CompanyDto;
import com.freight.user.entity.CompanyLicense;
import com.freight.user.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 数据处理层
 *
 * @author huyingtai
 */
public interface CompanyVoMapper extends BaseMapper<UserVo> {

    HomePageStatisticsVo tobeEntrustedorder(@Param(value = "userId") Long userId);

    HomePageStatisticsVo homePageStatistics(@Param(value = "userId") Long userId);

    /**
     * 获取货主信息
     * @param userId
     * @return
     */
    CommpanyInformationVo getCommpanyInformation(@Param("userId") Long userId);


    List<CompanyLicenseVo> getCompanyLicenseName(String certNo);

    CompanyLicense findByUserId(Long userId);



    /**
     * 通过用户身份证号获取
     *
     * @return CompanyInfoVo 公司信息
     */
    List<DriverCompanyVo> getCompanyByUserCard(@Param("num") String num);


    /**
     * 通过用户id获取
     *
     * @param userId
     * @return CompanyInfoVo 公司信息
     */
    CompanyInfoVo getCompanyInfoVoByUserId(@Param("userId") Long userId);

    /**
     * 通过用户id获取
     *
     * @param userIds
     * @return CompanyInfoVo 公司信息
     */
    List<CompanyInfoVo> getCompanyInfoVoByUserIds(@Param("userIds") Long[] userIds);

    /**
     * 通过用户id获取
     *
     * @param userIds
     * @return CompanyInfoVo 公司信息
     */
    List<CompanyInfoVo> getRegistCompanyInfoVo(@Param("userIds") Long[] userIds);


    /**
     *
     * @param page
     * @param companyDto
     * @return
     */
    Page<CompanyDetailInfoVo> getCompanyInfoVo(Page<CompanyDetailInfoVo> page,
                                               @Param("companyDto") CompanyDto companyDto);

    /**
     *
     * @param companyDto
     * @return
     */
    List<CompanyDetailInfoVo> getCompanyInfoVo(@Param("companyDto") CompanyDto companyDto);

    /**
     * 通过用户id获取
     *
     * @param userId
     * @return CompanyInfoVo 公司信息
     */
    AppointCompanyInfoVo getAppointCompanyInfoVoByUserId(@Param("userId") Long userId);

    /**
     * 通过用户id获取
     *
     * @param userIds
     * @return CompanyInfoVo 公司信息
     */
    List<AppointCompanyInfoVo> getAppointCompanyInfoVoByUserIds(@Param("userIds") Long[] userIds);


    List<CompanyInfoVo> getCompanyBaseInfoVo(@Param("companyDto") CompanyDto companyDto);
}